/***
 * Copyright (c) 2010 readyState Software Ltd
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may
 * not use this file except in compliance with the License. You may obtain
 * a copy of the License at
 * http://www.apache.org/licenses/LICENSE-2.0
 * Unless required by applicable law or agreed to in writing, software
 * distributed under the License is distributed on an "AS IS" BASIS,
 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
 * See the License for the specific language governing permissions and
 * limitations under the License.
 * 
 */

package com.readystatesoftware.mapviewballoons;

//import mapviewballoons.example.R;
import evan.zhang.flags.Flags;
import evan.zhang.flags.R;

import android.content.Context;
import android.view.Gravity;
import android.view.LayoutInflater;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.ImageView;
import android.widget.LinearLayout;
import android.widget.TextView;

import com.google.android.maps.OverlayItem;

/**
 * A view representing a MapView marker information balloon.
 * <p>
 * This class has a number of Android resource dependencies:
 * <ul>
 * <li>drawable/balloon_overlay_bg_selector.xml</li>
 * <li>drawable/balloon_overlay_close.png</li>
 * <li>drawable/balloon_overlay_focused.9.png</li>
 * <li>drawable/balloon_overlay_unfocused.9.png</li>
 * <li>layout/balloon_map_overlay.xml</li>
 * </ul>
 * </p>
 * 
 * @author Jeff Gilfelt
 *
 */
public class BalloonOverlayView extends FrameLayout {

	private LinearLayout layout;
	private TextView title;
	private TextView snippet;
	//added by Evan
	private ImageView flag;

	/**
	 * Create a new BalloonOverlayView.
	 * 
	 * @param context - The activity context.
	 * @param balloonBottomOffset - The bottom padding (in pixels) to be applied
	 * when rendering this view.
	 */
	public BalloonOverlayView(Context context, int balloonBottomOffset) {

		super(context);

		setPadding(10, 0, 10, balloonBottomOffset);
		layout = new LinearLayout(context);
		layout.setVisibility(VISIBLE);

		LayoutInflater inflater = (LayoutInflater) context
				.getSystemService(Context.LAYOUT_INFLATER_SERVICE);
		View v = inflater.inflate(R.layout.balloon_map_overlay, layout);
		
		flag = (ImageView) v.findViewById(R.id.flag_small);
		title = (TextView) v.findViewById(R.id.balloon_item_title);
		snippet = (TextView) v.findViewById(R.id.balloon_item_snippet);
		
		//test
		//snippet1 = (TextView) v.findViewById(R.id.balloon_item_snippet1);

		ImageView close = (ImageView) v.findViewById(R.id.close_img_button);
		close.setOnClickListener(new OnClickListener() {
			public void onClick(View v) {
				layout.setVisibility(GONE);
			}
		});

		FrameLayout.LayoutParams params = new FrameLayout.LayoutParams(
				LayoutParams.WRAP_CONTENT, LayoutParams.WRAP_CONTENT);
		params.gravity = Gravity.NO_GRAVITY;

		addView(layout, params);

	}
	
	/**
	 * Sets the view data from a given overlay item.
	 * 
	 * @param item - The overlay item containing the relevant view data 
	 * (title and snippet). 
	 */
	
	/*
	 * Added code is to add a small flag to the balloonview (by Evan)
	 */
	public void setData(OverlayItem item) {
		
		layout.setVisibility(VISIBLE);
		if (item.getTitle() != null) {
			title.setVisibility(VISIBLE);
			title.setText(item.getTitle());
			
			//Added by Evan
			String countrySmall = "s_"+item.getTitle().split("  ")[0].toLowerCase().replace(' ', '_');
			//Log.d("zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz",countrySmall);
			int resourceId = this.getResources().getIdentifier("evan.zhang.flags:drawable/"+countrySmall, null, null);
			if (resourceId == 0 ) {
				flag.setImageResource(R.drawable.star);
			}
			else {
				flag.setImageResource(resourceId);
			}
			
		} else {
			title.setVisibility(GONE);
		}
		if (item.getSnippet() != null) {
			snippet.setVisibility(VISIBLE);
			snippet.setText(item.getSnippet());
		} else {
			snippet.setVisibility(GONE);
		}
		
	}

	public void setDefaultData(Flags flags) {
		layout.setVisibility(VISIBLE);
		flag.setImageDrawable(flags.getFlagInfo().getSmallFlag());
		title.setText(flags.getFlagInfo().getDistDefault()+"  "+flags.getFlagInfo().getDistLocal());
		snippet.setText(flags.getFlagInfo().getCityDefault()+"  "+flags.getFlagInfo().getCityLocal());
	}
	public void setData(Flags flags) {
		layout.setVisibility(VISIBLE);
		flag.setImageDrawable(flags.getFlagInfo().getSmallFlag());
		title.setText(flags.getFlagInfo().getDistDefault()+"  "+flags.getFlagInfo().getDistLocal());
		snippet.setText(flags.getFlagInfo().getCityDefault()+"  "+flags.getFlagInfo().getCityLocal());
		
	}
	/*
	public void setData(int flagId, String country, String city) {
		title.setText(country);
		snippet.setText(city);
		flag.setImageResource(flagId);
	}	
	*/
}
